Stripe Payments Comprehensive skill for automating Stripe payment processing and subscription management. Core Workflows 1. Payment Flow STRIPE PAYMENT FLOW: ┌─────────────────┐ │ Customer │ │ Payment Intent │ └────────┬────────┘ ▼ ┌─────────────────┐ │ Checkout │ │ - Card Input │ │ - Validation │ └────────┬────────┘ ▼ ┌─────────────────┐ │ Processing │ │ - Auth │ │ - Capture │ └────────┬────────┘ ▼ ┌─────────────────┐ │ Confirmation │ │ - Receipt │ │ - Webhook │ └─────────────────┘ 2. Webhook Events webhook_handlers : payment_intent.succeeded : actions : - fulfill_order - send_receipt - update_crm payment_intent.payment_failed : actions : - notify_customer - retry_payment - log_failure customer.subscription.created : actions : - provision_access - send_welcome_email - update_metrics customer.subscription.deleted : actions : - revoke_access - send_offboarding_email - trigger_retention_flow invoice.payment_failed : actions : - send_dunning_email - update_subscription_status - create_support_ticket Subscription Management Plan Configuration subscription_plans : - name : Starter id : plan_starter price : 29 currency : usd interval : month features : - "5 users" - "10GB storage" - "Email support" metadata : tier : 1 - name : Growth id : plan_growth price : 79 currency : usd interval : month features : - "25 users" - "100GB storage" - "Priority support" metadata : tier : 2 - name : Enterprise id : plan_enterprise price : custom interval : month features : - "Unlimited users" - "Unlimited storage" - "24/7 support" - "Custom integrations" metadata : tier : 3 Subscription Lifecycle subscription_automation : on_create : - provision_service - send_welcome_email - create_customer_record - schedule_onboarding_call on_upgrade : - adjust_limits - prorate_billing - send_upgrade_confirmation - unlock_features on_downgrade : - schedule_limit_reduction - send_downgrade_notice - offer_retention_discount on_cancel : - schedule_access_revocation - send_exit_survey - trigger_win_back_campaign on_renewal : - send_renewal_receipt - update_usage_quotas - check_plan_eligibility Invoice Management Invoice Automation invoice_settings : defaults : auto_advance : true collection_method : charge_automatically days_until_due : 30 templates : header : company_name : "{{company}}" logo : "{{logo_url}}" footer : payment_terms : "Net 30" thank_you : "Thank you for your business!" automation : - event : invoice.created actions : - add_line_items - apply_discounts - calculate_tax - event : invoice.finalized actions : - send_to_customer - log_to_accounting - event : invoice.paid actions : - send_receipt - update_revenue Dunning Management dunning_sequence : - day : 0 event : payment_failed actions : - retry_payment - email_template : payment_failed_1 - day : 3 actions : - retry_payment - email_template : payment_failed_2 - sms_reminder - day : 7 actions : - retry_payment - email_template : payment_failed_3 - mark_at_risk - day : 14 actions : - final_retry - email_template : final_notice - pause_subscription - day : 30 actions : - cancel_subscription - email_template : cancellation - revoke_access Checkout Integration Checkout Session // Create Checkout Session const session = await stripe . checkout . sessions . create ( { mode : 'subscription' , payment_method_types : [ 'card' ] , line_items : [ { price : 'price_xxx' , quantity : 1 , } ] , success_url : 'https://example.com/success?session_id={CHECKOUT_SESSION_ID}' , cancel_url : 'https://example.com/cancel' , customer_email : 'customer@example.com' , subscription_data : { trial_period_days : 14 , metadata : { plan_tier : 'growth' } } , allow_promotion_codes : true , } ) ; Payment Elements // Create Payment Intent const paymentIntent = await stripe . paymentIntents . create ( { amount : 2000 , currency : 'usd' , customer : 'cus_xxx' , payment_method_types : [ 'card' ] , metadata : { order_id : '12345' } } ) ; // Confirm Payment const result = await stripe . confirmCardPayment ( paymentIntent . client_secret , { payment_method : { card : cardElement , billing_details : { name : 'John Doe' } } } ) ; Revenue Analytics Dashboard Metrics STRIPE REVENUE DASHBOARD ═══════════════════════════════════════ MRR: $125,450 (+8.5%) ARR: $1,505,400 New MRR: $12,340 Churned MRR: $4,120 Net MRR: +$8,220 SUBSCRIPTION BREAKDOWN: Active: 892 Trialing: 156 Past Due: 23 Cancelled: 45 (this month) BY PLAN: Starter ████████░░░░░░░░ 45% │ $28,500 Growth ██████████░░░░░░ 38% │ $47,600 Enterprise ██████░░░░░░░░░░ 17% │ $49,350 CHURN ANALYSIS: Monthly Churn Rate: 4.2% MRR Churn: $4,120 Reasons: - Price ████████░░░░ 35% - Competitor ██████░░░░░░ 25% - No longer needed ████░░░░░░░░ 20% - Support issues ███░░░░░░░░░ 12% - Other ██░░░░░░░░░░ 8% Cohort Analysis cohort_metrics : - cohort : "2024-01" customers : 150 month_1_retention : 95% month_3_retention : 82% month_6_retention : 71% ltv_estimate : $890 - cohort : "2024-02" customers : 180 month_1_retention : 93% month_3_retention : 79% ltv_estimate : $820 Fraud Prevention Risk Rules radar_rules : - name : block_high_risk condition : "risk_level = 'highest'" action : block - name : review_elevated_risk condition : "risk_level = 'elevated'" action : review - name : block_disposable_email condition : "email_domain in @disposable_domains" action : block - name : velocity_check condition : "card_country != ip_country" action : review - name : amount_threshold condition : "amount > 100000"
$1000
- action
- :
- review
- Customer Portal
- Portal Configuration
- customer_portal
- :
- features
- :
- subscription_update
- :
- enabled
- :
- true
- products
- :
- -
- product_starter
- -
- product_growth
- -
- product_enterprise
- proration_behavior
- :
- create_prorations
- subscription_cancel
- :
- enabled
- :
- true
- mode
- :
- at_period_end
- cancellation_reason
- :
- enabled
- :
- true
- options
- :
- -
- "Too expensive"
- -
- "Missing features"
- -
- "Switched to competitor"
- -
- "No longer needed"
- -
- "Other"
- payment_method_update
- :
- enabled
- :
- true
- invoice_history
- :
- enabled
- :
- true
- branding
- :
- colors
- :
- primary
- :
- "#5469d4"
- icon
- :
- "{{company_icon}}"
- Reporting Automation
- Scheduled Reports
- reports
- :
- -
- name
- :
- daily_revenue
- schedule
- :
- "0 9 * * *"
- metrics
- :
- -
- gross_volume
- -
- net_volume
- -
- new_customers
- -
- failed_payments
- destination
- :
- slack_finance
- -
- name
- :
- weekly_mrr
- schedule
- :
- "0 9 * * 1"
- metrics
- :
- -
- mrr
- -
- arr
- -
- churn_rate
- -
- expansion_revenue
- destination
- :
- email_leadership
- -
- name
- :
- monthly_reconciliation
- schedule
- :
- "0 9 1 * *"
- metrics
- :
- -
- total_revenue
- -
- fees
- -
- refunds
- -
- payouts
- destination
- :
- accounting_system
- API Examples
- Common Operations
- // Create Customer
- const
- customer
- =
- await
- stripe
- .
- customers
- .
- create
- (
- {
- :
- 'customer@example.com'
- ,
- name
- :
- 'John Doe'
- ,
- metadata
- :
- {
- user_id
- :
- '12345'
- }
- }
- )
- ;
- // Create Subscription
- const
- subscription
- =
- await
- stripe
- .
- subscriptions
- .
- create
- (
- {
- customer
- :
- customer
- .
- id
- ,
- items
- :
- [
- {
- price
- :
- 'price_xxx'
- }
- ]
- ,
- trial_period_days
- :
- 14
- ,
- payment_behavior
- :
- 'default_incomplete'
- ,
- expand
- :
- [
- 'latest_invoice.payment_intent'
- ]
- }
- )
- ;
- // Update Subscription
- await
- stripe
- .
- subscriptions
- .
- update
- (
- subscription
- .
- id
- ,
- {
- items
- :
- [
- {
- id
- :
- subscription
- .
- items
- .
- data
- [
- 0
- ]
- .
- id
- ,
- price
- :
- 'price_new_xxx'
- }
- ]
- ,
- proration_behavior
- :
- 'create_prorations'
- }
- )
- ;
- // Issue Refund
- const
- refund
- =
- await
- stripe
- .
- refunds
- .
- create
- (
- {
- payment_intent
- :
- 'pi_xxx'
- ,
- amount
- :
- 1000
- // Partial refund
- }
- )
- ;
- Best Practices
- Use Webhooks
-
- Don't rely on redirect alone
- Idempotency Keys
-
- Prevent duplicate charges
- Error Handling
-
- Graceful failure recovery
- PCI Compliance
-
- Use Stripe Elements
- Test Mode
-
- Validate before production
- Monitor Disputes
-
- Respond promptly
- Dunning Strategy
-
- Recover failed payments
- Revenue Recognition
- Track MRR properly